package edu.tfh.s2.ehkbot.unitTest;

import static org.junit.Assert.*;

import java.io.File;
import java.io.IOException;
import java.util.Vector;

import org.junit.*;

import edu.tfh.s2.ehkbot.EHKBotMain;
import edu.tfh.s2.ehkbot.EHKBotMain.SimulationNichtMoeglich;
import edu.tfh.s2.ehkbot.inventar.Regalfach;
import edu.tfh.s2.ehkbot.inventar.Ware;
import edu.tfh.s2.ehkbot.inventar.Warenbestand;
import edu.tfh.s2.ehkbot.inventar.Warenbox;
import edu.tfh.s2.ehkbot.simulation.SimulationGUI;

public class AuftragAbrbeitenTest {
	@Test(timeout=20000)
	public void TesteEinkauf() throws SimulationNichtMoeglich, IOException, ClassNotFoundException {
		SimulationGUI simGUI = SimulationGUI.getInstance();
		simGUI.loadTablesFromFile(simGUI.getWarenBestandTable(), new File("waren.warenbestand"));
		simGUI.loadTablesFromFile(simGUI.getWarenboxRegalTabel(), new File("warenboxf.warenboxfaecher"));
		simGUI.loadTablesFromFile(simGUI.getAuftraegeTable(), new File("auf01.auftrag"));

		int schokoladenBarcode = 8;
		
		EHKBotMain.enableSimulation();
		EHKBotMain.getInstance();
		SimulationGUI.getInstance().getSendeAuftragButton().doClick();
		EHKBotMain.getInstance().starteAuftrag();
		Ware ware = EHKBotMain.getInstance().getGeschaeft().getWarenbestand().findeWare(schokoladenBarcode); // Schokolade mit den Barcode 8
		int sollWarenBestand = 99;
		int istWarenBestand;
		do {
			istWarenBestand = EHKBotMain.getInstance().getGeschaeft().getWarenbestand().menge(ware);
		}while(sollWarenBestand != istWarenBestand);

		Vector<Regalfach> faecher = EHKBotMain.getInstance().getGeschaeft().getWarenboxregal().getRegalfaecher();
		for(Regalfach r : faecher) {
			Vector<Ware> waren = r.getWarenbox().getWaren();
			for(Ware w : waren) {
				if(w.getBarcode() == schokoladenBarcode)
					return;
			}
		}
		fail("Ware ist nicht in der Box.");
		//while(EHKBotMain.getInstance().getGeschaeft().getWarenbestand().menge(ware) == 8)
	}

}
